#ifndef _HEAP_H_
#define _HEAP_H_



// 数组默认大小
#define DEFAULT_HEAP_SIZE   100


/**
 * @brief 用数组实现的大顶二叉堆
 * 
 */
typedef struct heap
{
    int* arr;     // 存放元素的数组

    int capacity; // 二叉堆的容量

    int size;     // 二叉堆中有效元素数量
} heap_t;




heap_t* create_heap(int size);

int destroy_heap(heap_t* heap);

int capacity(heap_t* heap);

int size(heap_t* heap);

int is_empty(heap_t* heap);

int clear(heap_t* heap);

void sift_up(heap_t* heap, int index);

int add(heap_t* heap, int val);

int get_top(heap_t* heap);

void sift_down(heap_t* heap, int index);

int remove_top(heap_t* heap);

int replace_top(heap_t* heap, int val);




#endif // _HEAP_H_

/****************************** END OF FILE ******************************/
